#!/bin/bash

# 初始化变量
princname=""

# 读取文件内容（假设文件名为input.txt）
while IFS= read -r line; do
    # 检查是否为空行
    if [ -z "$line" ]; then
        echo "$line"  # 空行直接输出
        continue
    fi

    # 检查是否包含[]形式的内容，并提取[]中的内容
    if [[ "$line" =~ \[([^\]]+)\] ]]; then
        princname="${BASH_REMATCH[1]}"
    else
        # 如果没有匹配到[]，则根据princname变量的值决定输出
        if [ -n "$princname" ]; then
            # 这里我们假设不需要将princname替换回文本中（因为没有遇到[bb]的特殊处理），
            # 只是展示如何根据princname的值做其他处理或输出。
            # 如果需要替换文本中的[aa]（尽管在这个逻辑中我们没设置回去为aa的场景），
            # 可以使用下面的echo命令，但在这个场景下它不会生效，因为我们已经不再寻找[aa]来设置princname。
            # echo "${line//[aa]/$princname}"
            
            # 由于没有特定的替换逻辑除了设置princname，我们直接输出原行
            # 但你可以在这里添加基于princname的逻辑来处理行内容
            echo "$princname/$line@l"
        fi
    fi
done < input.txt
